<?php namespace Common\Model;
use Hdphp\Model\Model;

class Arc extends Model{
    protected $table='article';

//    自动验证
    protected $validate=array(
        array('title','required','文章标题不能为空',3,3),
        array('category_cid','required','分类必须选择',3,3)
    );

//    自动完成
    protected $auto=array(
        array('sendtime','time','function',3,1),
        array('updatetime','time','function',3,2),
        array('user_uid','getUid','method',3,1),
        array('thumb','getThumb','method',3,3)
    );

//    获得uid
    public function getUid(){
        return $_SESSION['info']['uid'];
    }
//    获得缩略图
    public function getThumb(){
//        获取前面传来的隐藏域里的旧图片的值 代表是编辑修改
        $oldImg=Q('post.thumb');
//        如果没有上传图片就返回空字符串存入数据库
        if($_FILES['thumb']['error']==4){
//            判断是否有旧图片的信息
            if($oldImg){
//                返回旧图片的信息
                return $oldImg;
            }
            return '';
        }
//        设置上传类型和  文件的大小
        $files= Upload::type('jpg,jpeg,gif,png')->size(3000000)->make();
//        进行判断
        if($files){
//            如果用户在添加或编辑的时候有图片上传
//            如果有旧图片就先删除旧图片再上传新图片
            if($oldImg){
                unlink($oldImg);
//                还要删除原图
                $path=str_replace('_thumb','',$oldImg);
                unlink($path);
            }
//            p($_FILES);die;
//            如果上传成功，返回上传地址给数据
//            处理缩略图
            $newPath = str_replace('.' . $files[0]['ext'], '_thumb.' . $files[0]['ext'], $files[0]['path']);
            $thumbPath = Image::thumb($files[0]['path'],$newPath,200,200,2);
//            Image::thumb($_FILES['thumb']['name'],$files[0]['basename'],200,200,5);
            return $thumbPath;
//            return $files[0]['path'];
        }else{
            //把上传错误压入到当前模型的错误属性，这样外面的控制器就可以用getError来调取了
            $this->error=Upload::getError();
        }
    }
//    添加文章
    public function store(){
//      一 先验证
        if(!$this->check()) return false;
//        二添加动作 $aid 获得所添加的aid
//        1添加article表
        $aid=$this->add();
//        2 添加article_data表
        $artDataModel=new \Common\Model\Arcdata();
        $artDataModel->create();
        $artDataModel->data['article_aid']=$aid;
        $artDataModel->add();
//            3添加article_tag表
        $artTagModel=new \Common\Model\Arctag();
        $artTagModel->store($aid);
//        p($aid);

//        判断是否有错误信息
//        if($this->error) return false;
//        $this->add();
        return true;
    }


//    编辑文章
    public function edit(){
//        一，先验证
        if(!$this->check()) return false;
//        二，修改
//        1.article
        $this->save();
//        2.article_tag 中间表
        $arcTagMoudel=new \Common\Model\Arctag();
//        接受隐藏域传来的aid
        $aid=Q('post.aid',0,'intval');
//        先都删除
        $arcTagMoudel->where("article_aid={$aid}")->delete();
//        再添加
        $arcTagMoudel->store($aid);
//        3.article_data 表、
        $arcDataMoudel=new \Common\Model\Arcdata();
        $arcDataMoudel->create();
        $arcDataMoudel->where("article_aid={$aid}")->save();
        return true;
    }


//    因为验证两张表，所以把验证方法单独写入一个方法
        private function check(){
            //create方法：让$this->data有数据，触发自动验证自动完成
            if(!$this->create())return false;
//            如果有错误信息，上传失败
            if($this->error) return false;
//            验证article_data表
            $articleData=new \Common\Model\Arcdata();
            if(!$articleData->create()){
                $this->error=$articleData->getError();
                return false;
            }
            return true;
        }
}